Day21-main()函式的引數
main()函式的引數,定義為外部傳給main()函式的引數,在執行列時,可以在程式後加上引數,當程式需要加受這些引數時,就可以用main()函式的引數來輸入。
範例1:
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
int i;
printf("argc=%d\n",argc);
for(i=0;i<argc;i++)
printf("%s\n",argv[i]);
system("pause");
}
印出:
解釋:argc在這裡代表引數的總個數,char *argv[]表示以一個字元陣列儲存所有引數
範例2: 根號的計算---找出最接近該數之根號值的整數
#include<stdio.h>
#include<stdlib.h>
int SQRT (int);
int main(void){
int n;
scanf("%d",&n);
printf("%d",SQRT(n));
system("pause");
return 0;
}
int SQRT (int n){
int i;
if(n<1)return -1;
for(i=1;i<n;i++)
if(i*i>n)
break;
return (i*i-n)< ((i-1)*(i-1)-n)? i:i-1;
}
印出:
解釋:
看到倒數第2行這串程式碼比較複雜,這是用到了三元運算子,判斷i平方較接近n或n-1平方較接近n,如果判斷為真,即i*i-n的值較小,較接近n,則回傳i;否則,則傳回i-1
範例3:排列組合數的計算
從5個物品中取出3個物品有C(5,3)種方式
計算公式:C(n,r)=C(n-1,r)+C(n-1,r-1)
#include<stdio.h>
#include<stdlib.h>
int C(int ,int);
int main(void){
int n,r;
printf("計算組合數C,請輸入n,r:");
scanf("%d %d",&n,&r);
printf("C(%d,%d)=%d",n,r,C(n,r));
system("pause");
}
int C(int n,int r){
if(n<r||r<0)
return -1;
if(n==r||r==0)
return 1;
return C(n-1,r)+C(n-1,r-1);
}
印出:
解釋:
第12行取排列組合時,n<r或r<0都是不合法的,此時回傳-1
第14行取相同數0種的方式都只有一個,也就是n==r或r==0時會回傳1
那今天就先到這
謝謝大家今天的閱讀